package com.controller.user;

import com.entity.Comment;
import com.service.user.CommentService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@CrossOrigin
@RestController
public class CommentController {

  @Autowired CommentService commentService;

  /**
   * 获取一个商品的所有评论数目
   *
   * @param goodId 商品编号
   * @return 商品的所有评论数目
   */
  @GetMapping("good/getGoodCommentCount")
  public String getGoodCommentCount(@RequestParam("goodId") String goodId) {
    int count = commentService.getGoodCommentCount(goodId);
    return String.valueOf(count);
  }

  /**
   * 获取对应商品的评论信息
   *
   * @param goodId 商品编号
   * @return 评论列表
   */
  @GetMapping("good/getGoodComments")
  public List<Comment> getGoodComments(@RequestParam("goodId") String goodId) {
    return commentService.getGoodComments(goodId);
  }

  /**
   * 发表评论
   *
   * @param userId 用户编号
   * @param goodId 商品编号
   * @param replyCommentId 回复评论的编号
   * @param content 内容
   * @return 新添加评论的编号
   */
  @GetMapping("good/addAComment")
  public String addAComment(
      @RequestParam("userId") String userId,
      @RequestParam("goodId") String goodId,
      @RequestParam("replyCommentId") String replyCommentId,
      @RequestParam("content") String content) {
    if (replyCommentId.equals("")) {
      replyCommentId = null;
    }
    return commentService.addAComment(userId, goodId, replyCommentId, content);
  }

  /**
   * 删除1条评论
   *
   * @param userId 用户编号
   * @param commentId 评论编号
   * @return 删除成功返回1，否则返回0(不是自己的评论就会失败)
   */
  @GetMapping("good/delAComment")
  public String delAComment(
      @RequestParam("userId") String userId, @RequestParam("commentId") String commentId) {
    int ret = commentService.delAComment(userId, commentId);
    return String.valueOf(ret);
  }

  /**
   * 举报评论
   *
   * @param userId 用户编号
   * @param commentId 评论编号
   * @param type 举报类型
   * @param reason 举报原因
   * @return 成功返回1，失败返回0
   */
  @GetMapping("good/reportComment")
  public String reportComment(
      @RequestParam("userId") String userId,
      @RequestParam("commentId") String commentId,
      @RequestParam("type") String type,
      @RequestParam("reason") String reason) {
    int ret = commentService.reportComment(userId, commentId, type, reason);
    return String.valueOf(ret);
  }
}
